package com.quectel.sdk.kuangshi.monitor.model;

import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 在这里编写说明
 * <p>
 * hardwareVer string 硬件版本
 * firmwareVer string 固件版本
 * deviceId string 设备编号，唯一代码（核心板）
 * deviceModel string 设备型号，（eg： MegCube-B4H16-311）
 * channelNum int 通道数量（1~16)
 * licenseKey string 设备授权码，用于区盒子分行业属性，最多64字节，含义见：行业版本管理
 * serialNumber string 设备SN号，最多64字节（整机）
 * megConnectVersion string MegConnect协议 SDK版本号（eg: V2.1.1.A35）（非必选）
 * deviceHeartbeat
 * {}
 * obj 心跳数据上传设置，心跳数据包含：DeviceID、时间等信息，具体参照“主动上报数据说明”，如内容全空将不会主动上
 * 报
 * |—serverAdd string 上传服务器域名或IP地址，可指定端口，用“:”分隔：服务器地址示例：ws://domain(ip):port/
 * |—htInterval integer 访问心跳接上报的时间间隔，(1~3600) 单位秒
 * hardwareStatus{} obj 硬件当前状态
 * |—cpuUseRate integer CPU使用率, 百分比
 * |—cpuTemp integer CPU温度，摄氏度
 * |—gpuTemp integer GPU温度，摄氏度
 * |—caseTemp integer 电路板温度，摄氏度
 * |—memSize integer 内存总大小，单位MB
 * |—memUse integer 内存已使用大小，单位MB
 * |—storageSize integer 存储磁盘总大小，单位MB
 * |—
 * storageUseSize
 * integer 存储磁盘已使用大小，单位MB
 * time{} obj 时间相关参数
 * |—deviceTime integer 设备当前时间，以uxix时间戳表示，1970/1/1,0点开始计的秒
 * |—ntpEnable bool true/开，false/关
 * |—ntpServerAdd string 上传服务器域名或IP地址，可指定端口，用“:”分隔，SNTP协议支持
 * RFC 2030 - Simple Network Time Protocol (SNTP) Version 4
 * |—ntpInterval integer 访问NTP服务器的时间间隔，单位分钟（1~65535）
 * |—ntpFailCount integer NTP校时错误次数，0表示无错误（最大65535）
 * |—timeZone integer index 对应实际的时差，具体参考下表，默认为27(时差+8)
 * eth{} obj 以太网口0
 * |—ethNetMode int 0-DHCP；1-静态IP
 * |—ethIpAddr string 有线网IP地址
 * |—ethSubmask string 有线子网掩码
 * |—ethGateway string 有线网关
 * |—ethDns string 有线DNS服务器地址
 * |—ethMac string 有线网卡MAC地址
 * eth1{} obj 以太网口1，双网卡模式下显示
 * |—ethNetMode int 0-DHCP；1-静态IP
 * |—ethIpAddr string 有线网IP地址
 * |—ethSubmask string 有线子网掩码
 * |—ethGateway string 有线网关
 * |—ethDns string 有线DNS服务器地址
 * |—ethMac string 有线网卡MAC地址
 * |—ethBondMode int 2 表示bond 平衡模式；1 表示bond 主备模式；7 表示双网卡独立使用
 *
 * @author: rananxin
 * @email: ryan.ran@quectel.com
 * @date: 2023-01-16 09:21:00
 */
@NoArgsConstructor
@Data
public class SyncDeviceResp {


    /**
     * hardwareVer
     */
    private String hardwareVer;
    /**
     * firmwareVer
     */
    private String firmwareVer;
    /**
     * deviceModel
     */
    private String deviceModel;
    /**
     * deviceId
     */
    private String deviceId;
    /**
     * channelNum
     */
    private Integer channelNum;
    /**
     * licenseKey
     */
    private String licenseKey;
    /**
     * serialNumber
     */
    private String serialNumber;
    /**
     * megConnectVersion
     */
    private String megConnectVersion;
    /**
     * deviceHeartbeat
     */
    private DeviceHeartbeatCls deviceHeartbeat;
    /**
     * hardwareStatus
     */
    private HardwareStatusCls hardwareStatus;
    /**
     * time
     */
    private TimeCls time;
    /**
     * eth
     */
    private EthCls eth;
    /**
     * eth1
     */
    private Eth1Cls eth1;

    /**
     * DeviceHeartbeatCls
     */
    @NoArgsConstructor
    @Data
    public static class DeviceHeartbeatCls {
        /**
         * serverAdd
         */
        private String serverAdd;
        /**
         * htInterval
         */
        private Integer htInterval;
    }

    /**
     * HardwareStatusCls
     */
    @NoArgsConstructor
    @Data
    public static class HardwareStatusCls {
        /**
         * cpuUseRate
         */
        private Integer cpuUseRate;
        /**
         * cpuTemp
         */
        private Integer cpuTemp;
        /**
         * gpuTemp
         */
        private Integer gpuTemp;
        /**
         * caseTemp
         */
        private Integer caseTemp;
        /**
         * memSize
         */
        private Integer memSize;
        /**
         * memUse
         */
        private Integer memUse;
        /**
         * storageSize
         */
        private Integer storageSize;
        /**
         * storageUseSize
         */
        private Integer storageUseSize;
    }

    /**
     * TimeCls
     */
    @NoArgsConstructor
    @Data
    public static class TimeCls {
        /**
         * deviceTime
         */
        private Integer deviceTime;
        /**
         * ntpEnable
         */
        private Boolean ntpEnable;
        /**
         * ntpInterval
         */
        private Integer ntpInterval;
        /**
         * ntpFailCount
         */
        private Integer ntpFailCount;
        /**
         * ntpServerAdd
         */
        private String ntpServerAdd;
        /**
         * timeZone
         */
        private Integer timeZone;
    }

    /**
     * EthCls
     */
    @NoArgsConstructor
    @Data
    public static class EthCls {
        /**
         * ethNetMode
         */
        private Integer ethNetMode;
        /**
         * ethIpAddr
         */
        private String ethIpAddr;
        /**
         * ethSubmask
         */
        private String ethSubmask;
        /**
         * ethGateway
         */
        private String ethGateway;
        /**
         * ethDns
         */
        private String ethDns;
        /**
         * ethMac
         */
        private String ethMac;
    }

    /**
     * Eth1Cls
     */
    @NoArgsConstructor
    @Data
    public static class Eth1Cls {
        /**
         * ethNetMode
         */
        private Integer ethNetMode;
        /**
         * ethIpAddr
         */
        private String ethIpAddr;
        /**
         * ethSubmask
         */
        private String ethSubmask;
        /**
         * ethGateway
         */
        private String ethGateway;
        /**
         * ethDns
         */
        private String ethDns;
        /**
         * ethMac
         */
        private String ethMac;
        /**
         * ethBondMode
         */
        private Integer ethBondMode;
    }
}
